import re
from flask import Blueprint,request,json,jsonify
from flask.wrappers import Request   #导入蓝图


from db import db1 #导入封装好的数据库文件

from werkzeug.security import generate_password_hash,check_password_hash

bp_auser = Blueprint("auser",__name__) #实例化蓝图


# 初始化数据
@bp_auser.route('/reg')
def reg():
    password = generate_password_hash('123')
    sql1="insert into auser values(0,'张三','%s','ad科技师范那')"%(password)
    db1.insert(sql1)

    sql2="insert into auser values(0,'小李','%s','长风破浪会有时,直挂云帆济沧海')"%(password)
    db1.insert(sql2)
    return 'ok'

# 登录接口
@bp_auser.route('/login',methods=['POST'])
def login():
    #获取用户名密码
    data=request.data
    if data:
        data=json.loads(data)
    else:
        data=request.form
    #根据用户名去数据库查询
    sql="select * from auser where username='%s'"%(data['username'])
    res=db1.find(sql)
    #比对密码
    if res:
        #返回结果,userid
        if check_password_hash(res['password'],data['password']):
            return jsonify({'code':200,'userid':res['id'],'username':res['username'],'sign':res['sign']})
        else:
            return jsonify({'code':10010,'mes':'密码错误'})
    return jsonify({'code':10011,'mes':'用户不存在'})

    # 把data写成个公用函数
def get_data():
    data=request.data
    if data:
        data=json.loads(data)
    else:
        data=request.form
    return data

@bp_auser.route('/articleM',methods=['POST','GET'])
def articleM():
    if request.method=='POST':
        #获取用户输入
        data=get_data()
        #构造sql语句
        sql="insert into article(title,content,userid)values('%s','%s','%d')"%(data['title'],data['content'],int(data['userid']))
        db1.insert(sql)
        #返回结果
        return jsonify({'code':200})
    else:
        #判断获取所有文章还是我的文章
        uid=int(request.args.get('uid'))
        if uid>0:
            sql="select * from article where userid=%d"%(int(uid))
        else:
            sql="select * from article"
        res=db1.findall(sql)
        return jsonify({'code':200,'list':res})

            
        